﻿<meta charset="UTF-8" />
<pre>
知识点一：浅拷贝复制
	<script>
		var p1 = {
			name:"zs",
			age:"19",
			hobby:["西瓜","冬瓜"]
		}
		
		var p2 = {
			name:"LS"
		};
		
		for(var p in p1){
			if(!p2[p]){
				p2[p] = p1[p]
			}
			
		}
		
		console.log(p2); //这样p2就拥有了 p1的所有对象
		
		p2.age = 20;
		p2.hobby.push("南瓜");	//这个会影响p1的hobby
		
		console.log(p1.hobby);	//南瓜也被加进来了
		console.log(p1.age);	//19
	</script>	
	上面这种情况叫浅拷贝。就是p1里面引用类型的数组没有真正彻底拷贝给p2, 仅仅给了个内存地址给p2。
	

知识点三：深拷贝
	<script>
		var p1 = {
			name:"zs",
			age:"19",
			hobby:["西瓜","冬瓜"]
		}
		
		var p2 = {
			name:"LS"
		};
		deepCopy(p1,p2);
		console.log(p2);	
		
		p2.hobby.push("南瓜");
		console.log("没有影响",p1.hobby);	//不受p2修改的影响
		
		//创建一个完成深拷贝的函数
		function deepCopy(p, c) { 	
		　　　　var c = c || {};	
		
			for (var i in p) { 	
				if(c[i]){ continue;}
				if (typeof p[i] === 'object') { 	
		　　　　　　　　c[i] = (p[i].constructor === Array) ? [] : {};	
		　　　　　　　　deepCopy(p[i], c[i]);
		
		　　　　　　} else {			
		　　　　　　　　　c[i] = p[i];	
		　　　　　　}
		　　　　}	
		
		　　 　return c;
		}
	</script>
</pre>